Windows启动阶段驱动程序加载顺序 您所在的位置:网站首页 win 7如何更改启动顺序 Windows启动阶段驱动程序加载顺序

Windows启动阶段驱动程序加载顺序

2024-06-17 16:23| 来源: 网络整理| 查看: 265

有两种方法可以用于控制设备驱动程序的加载顺序。这两种方法都利用了位于 /HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control 的注册表项。第一种方法是修改 ServiceGroupOrder。第二种方法是根据 GroupOrderList 分配用于决定驱动程序加载顺序的 Tag 值。Tag 值、起始值、类型值和组名称都位于 HKLM/SYSTEM/CurrentControlSet/Services/ 项中,必须先添加此项,然后这些值才能在组名称列表中列出。 这两种方法仅对起始值为 0 (SERVICE_BOOT_START) 或 1 (SERVICE_SYSTEM_START) 的设备驱动程序有效。在所有情况中,起始值为 0 的设备驱动程序都将在起始值为 1 的所有设备驱动程序尝试加载之前先加载。

方法 1:ServiceGroupOrder

称为 Tag 的可选项可以包括在设备驱动程序的注册表中。Tag 的值可以帮助决定某个组内设备驱动程序的加载顺序。加载顺序不必按数字顺序排列,相反,可以按照由 GroupOrderList 定义的顺序排列。GroupOrderList 中每个组的第一项都是 Tag 值的数值。接下来是要加载的 Tag 值的数字顺序。组中的设备驱动程序首先按照其由 GroupOrderList 所定义的 Tag 值进行加载。如果设备驱动程序没有 Tag 值,或者 Tag 值不在 GroupOrderList 中,则这些设备驱动程序将在加载具有有效 Tag 值的设备驱动程序之后进行加载。对于这些设备驱动程序,无法保证加载顺序,只能保证组中的所有设备驱动程序都在下一组加载之前进行加载。 下面是 GroupOrderList 的部分输出:

/registry/machine/system/currentcontrolset/control/grouporderlist Base = REG_BINARY 0d 00 00 00 01 00... Extended base = REG_BINARY 04 00 00 00 01 00... Filter = REG_BINARY 05 00 00 00 01 00... Keyboard Class = REG_BINARY 01 00 00 00 01 00... Keyboard Port = REG_BINARY 01 00 00 00 01 00... Ndis = REG_BINARY 09 00 00 00 01 00... Pointer Class = REG_BINARY 01 00 00 00 01 00... Pointer Port = REG_BINARY 03 00 00 00 01 00... . . .

注意:没有为 SCSI class 定义值。并非每个组都出现在 GroupOrderList 中。如果 GroupOrderList 中没有某个组,则无法保证组内设备驱动程序的加载顺序。 与 ServiceGroupOrder 一样,GroupOrderList 也可以修改。以上示例可以添加 SCSI class 的 Tag 项:

/registry/machine/system/currentcontrolset/control/grouporderlist SCSI class = REG_BINARY 02 00 00 00 02 00 00 00 01 00 00 00 Base = REG_BINARY 0d 00 00 00 01 00... Extended base = REG_BINARY 04 00 00 00 01 00... . . .

在这个示例中,SCSI class 组识别出两个 Tag 值:00000001 和 00000002。Tag 值的加载顺序是先加载 00000002,其次是 00000001。如果 SAMPLDRV 在 SCSI class 组中(与 SCSIDISK 相同),则任一 Tag 值都可以保证 SAMPLDRV 在 SCSIDISK 之前加载,因为 SCSIDISK 没有 Tag 值,而没有作标记的驱动程序将在组中最后一个加载。 如果由于某种原因,SCSIDISK 分配的 Tag 值是 0x00000001,则当 SAMPLDRV 分配的 Tag 值是 00000002 时,SAMPLDRV 在 SCSIDISK 之前加载:

/registry/machine/system/currentcontrolset/services/sampldrv Type = REG_DWORD 0x00000001 Start = REG_DWORD 0x00000000 Group = SCSI class ErrorControl = REG_DWORD 0x00000000 DependOnGroup = REG_MULTI_SZ "SCSI miniport" Tag = REG_DWORD 0x00000002


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有